如何编译VC工程中的asm文件

1 VC6

在有些VC工程中,包含一些为了优化寄存器而用汇编写的asm文件,假设有一个文件名叫XXX.asm,那么怎么编译这个XXX.asm文件为XXX.o文件呢?以VC6.0为例,在VC6.0的工程设置里有一个选项卡叫做Custom Build,选中要左边文件树里要编译的XXX.asm,在右边的Commands下的编辑框里输入

$(masm_dir)/ml /c /Cp /coff /Fo$(OUTDIR)/$(InputName).obj /Zm /Zi $(InputPath)

(这里的masm_dir是环境变量,表示masm安装的路径,如果用其他类型的汇编编译器,需要根据其编译选项作相应的修改)

在右边的Outputs下的编译框里输入

$(OUTDIR)/$(InputName).obj

这样就可以了。

Project->Settings...->

打开“Project Settings”对话框

->选择C/C++页

“Category”中选择“Listing Files”

在“Listing file type”中选择“Assembly,Machine Code,and Source”

“OK”后重新编译

clean all

在VC6中编译ASM文件,需要安装VCPP5

但是打了SP6的可能装不上这个,可以到注册表里

HKLM\SOFTWARE\Microsoft\VisualStudio\6.0\ServicePacks子键下

latest DWORD值 00000006

改为

latest DWORD值 00000005就可以安装了

也可以直接解包把里面的ml.exe ml.err 文件手工复制到vc98\bin目录里

========================

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\ServicePacks]

"sp6"=""

"latest"=dword:00000005

========================

将 asm文件加入到工程里时,要设置工程中该文件的Custom Build属性

Commands:

ml /c /coff /Fo $(OutDir)\$(TargetName) $(InputPath)

Outputs:

$(OutDir)\$(TargetName).obj

完毕。

2 VS2012(内置masm编译器)

1. 创建项目:

2. 右键点击项目名进行自定义配置

3.选择masm编译器:

4. 添加文件,需要修改文件后缀名。这里需要注意不能在前几步创建文件,不然后续“配置属性”设置中会缺少Microsoft Macro Assembler。

5. helloworld代码如下:

6. 环境配置。因为上述代码中使用了外部函数库,所以需要包含额外的文件。选择“项目”中的属性:

7. 为了包含以下的库文件:(这些库文件来自http://www.kipirvine.com)

需要增加附加库相关的配置(注意下面第二张图中添加库时一定要带后缀.lib):

8. 选择子系统:

9. 之后可以进行编译了:

10. 执行的结果如下:

为了高亮汇编语法,将下面的文件放到D:\ProgramFiles (x86)\Microsoft Visual Studio 11.0\Common7\IDE目录中。

然后进行如下的配置即可(工具->选项):

由于文本编辑器对汇编语法的支持问题,会显示不少错误(红色波浪线),可以通过下面的配置消除:

另外可以在c/c++语言中直接插入汇编,VS中可以使用__asm伪指令:

执行的结果如下:

PS1:本文参考自Irvine的《Intel汇编语言程序设计》及对应的网站。该书是很好的汇编入门教程。

PS2:以上例子中使用的VS版本为VS2012,使用的系统是Win8。

本页共54段,2158个字符,3548 Byte(字节)